iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

資料型別 (Data Type) 是用來告訴電腦系統的編繹器 (compiler) 如何處理這組資料,如果不當使用資料型別,當程式執行時就會發生錯誤。

JavaScript 在程式語言的型別系統 (Type system) 中屬於 「弱型別」 語言,也可以稱為「動態型別」語言,因為它在宣告變數時不用指定型別給該變數,例如直接指定這個變數為數字型別或是字串型別。雖然這樣有語法簡潔的優點,但也容易因「自動轉型」的特性產生許多問題。(相反地,強型別語言就是在宣告變數時就必須要指定型別給該變數)

我們平常大多會說變數的資料型別,但更完整地說應該是此變數的值的資料型別,變數本身沒有型別,值才有。而 JavaScript 支援的型別主要有兩類:

  • 基本型別 (Primitives)

    1. 字串 (string):會用單引號或雙引號標註的內容,例如:"radio"、'tape'、"18"
    2. 數字 (number):可以是整數或小數,例如:777、1.1314
    3. 布林值 (boolean):常被使用在邏輯判斷中,只有兩種值:truefalse
    4. 空值 (null):可能是曾經有被賦予值的變數,但現在沒有值
    5. 未定義 (undefined)
    6. symbol (ES6後的新型別)
  • 物件型別 (Object):除了上述的基本型別,其他都可以歸類至物件型別如陣列 (array)、物件 (object)、函式 (function)等

typeof 運算子

當我們想要辨識某個變數的型別時,我們可以使用 typeof 這個運算子,使用方式為

typeof 運算元 // 可無小括號
typeof (運算元) // 也可以有小括號,兩者皆可

typeof 運算子會回傳該運算元類型的字串如下:

typeof 100;         // "number"
typeof "iThome";    // "string"
typeof true;        // "boolean"
typeof {};          // "object"

除了上述直接對值進行判斷,我們也可以在宣告變數後對變數使用 typeof 來進行辨識:

let apple = 1;
let myName = "Key";
let func = new Function("3+7");
let today = new Date();

會回傳下列結果:

console.log(typeof func);        // 回傳 "function"
console.log(typeof myName);      // 回傳 "string"
console.log(typeof apple);       // 回傳 "number"
console.log(typeof today);       // 回傳 "object"
console.log(typeof doesntExist); // 回傳 "undefined"

實際操作如圖:


對於特性,則會回傳該特性的值的類型:

typeof string.length; // 回傳 "number"

值得注意的是會有些「例外」,如:

typeof null; // "object"

許多例外在之後有機會會陸續講到。

今天先跟大家一起認識資料型別有哪些類型,以及使用 typeof 運算子來辨識型別,明天將會針對每個型別做更深入的探討。


參考資料

線上課程
MDN
JacaScript 入門指南


上一篇
Day07 Visual Studio Code 環境建立
下一篇
Day09 數字型別 與 算術運算子
系列文
從基礎開始,用 JavaScript 從頭建立起程式肌肉 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言